﻿// Sheego.Service.X400
// Copyright(C) 2015 Schwab Versand GmbH
//
// This source file is subject to the Microsoft Public License(Ms-PL).
// http://www.opensource.org/licenses/ms-pl.html
// All other rights reserved.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Sheego.Service.X400.Scheduler.Shared
{
    public interface IScheduler
    {
        /// <summary>
        /// Steuerung des Scheduler
        /// </summary>
        Boolean ShouldRun { get; set; }

        /// <summary>
        /// Job-Liste für Scheduler
        /// </summary>
        IList<IJob> Jobs { get; }

        /// <summary>
        /// Hauptschleife für Schedulder, läuft so lange bis Property Run auf false gesetzt wird
        /// </summary>
        void Run();

        /// <summary>
        /// wird von Run aufgerufen und prüft ob Jobs ausgeführt werden sollen.
        /// Führt Job aus, wenn er an der Reihe ist
        /// </summary>
        /// <param name="current">aktueller Zeitpunkt</param>
        void Step(DateTime current);

    }
}
